package componentes.mips;

import componentes.basicos.Barramento;
import componentes.basicos.Constantes;
import componentes.basicos.Palavra;

/**
 *
 * Classe para a criação de um contador de programa (PC).
 * a classe realiza a criação de um contador de programa, necessário para
 * manter o endereço da instrução atual.
 * 
 * @author Gustavo Miguel, Cleisson Alves, Evandro Francisco, Lucas.
 */

// Tudo certin *Gustavo
public class PC {

    // Atributos da classe.
    private Barramento entrada;         // Barramento para a entrada de dados.
    private Barramento saida;           // Barramento para a saida de dados.    
    /**
     * Cria um PC com os barramentos inoperantes.
     */
    public PC() {
        entrada = new Barramento(Constantes.INOPERANTE);
        saida = new Barramento(Constantes.INOPERANTE);
    }

    /**
     * Retorna o Barramento de saida do PC. Este Barramento contém
     * o endereço da instrução a ser lida na memória de instruções.
     * @see MemoriaDeInstrucao
     * @return Barramento com a saida do PC.
     */
    public Barramento getSaida() {
        return saida;
    }

    /**
     * Configura o Barramento de entrada do PC. 
     * @param entrada Barramento da entrada do PC.
     */
    public void setEntrada(Barramento entrada) {
        this.entrada = entrada;
    }

    /**
     * Configura o Barramento de saida do PC.
     */
    public void setSaida() {
        this.saida = this.entrada;
    }

} // fim da classe
